Computerized spreadsheet applications, such as Microsoft Corporation's EXCEL software product have gained widespread use. Individuals and businesses routinely use computerized spreadsheets for a variety of purposes, such as accounting, finance, and investments.
Over the years, the functionality made available to users of these spreadsheet applications has grown significantly. Users of these applications are now able to implement functionality or import data embedded in areas outside the spreadsheet application in order to satisfy the needs of the user. One objective of today's users is to implement analytical functionality stored in a Component Object Model (“COM”) server from the spreadsheet application.
Unfortunately, current methods of implementing the functionality in the COM server can be time and coding intensive. First, a user or developer is not able to call the COM server directly from the spreadsheet application. The developer is typically required to build an additional layer, or wrapper, around the COM server in order to translate the functionality from the COM server to the spreadsheet application. Currently there are several conventional methods for building the additional layer to translate the functionality from the COM server to the spreadsheet application. One conventional method includes writing the COM server. Next, the developer defines the interface of the COM server using standard computing toolsets provided by Microsoft Corporation. Next, the code for the function is implemented. Finally, the developer writes a dynamic link library defining attributes of the function. In addition, the developer will have to manually write the mapping layer that translates the differences between the COM server and the spreadsheet application.
When writing the COM server, the developer will be required to define an interface to the COM server. The COM server typically includes one or more COM classes. Each COM class can contain one or more methods. For each method associated with a COM class in the COM server, the developer wants to include a corresponding function to the add-in function.
Methods associated with each COM class are typically complex to understand for the everyday user of the spreadsheet application. Each method typically includes documentation. The documentation provides information as to what an input will do in a method, what restrictions are placed on a method, under what conditions the method will respond, whether the method will converge, etc. The documentation needs to be stored in a place that is documented for COM servers, for users using the COM servers, and with add-in functions, for people using add-in functions, so that there is consistency between the COM server and the add-in server.
Problems arise because the toolsets provided for building COM servers are too basic. If a developer wants to add a method or argument to a COM server during development of the COM server, the developer has to made manual changes in several different places for each addition. For example, first, the developer will have to change the interface definition language (“IDL”). The Microsoft Interface Definition Language (“MIDL”) is one example of an IDL. The MIDL is a standard way for defining COM interfaces. To change portions of the IDL the developer would need to modify some aspects of the implementation of the COM server.
In addition, the header file of the class definition and the class definition itself would have to be modified in order to change the definition of the function or add the definition of the function to the COM server. Furthermore, in the add-in, the developer would need to add a new function and write addition-specific code that translates the function from the spreadsheet to the COM server.
In view of the foregoing there is a need in the art for a method to allow a spreadsheet application user to define the interface between the spreadsheet application and the COM server independent of all places the interface is defined so that when implemented, the interface automatically inserts the information that a developer previously had to insert manually into each portion of the COM and add-in servers, so that a function in a COM server can be directly accessed from the spreadsheet application.